package com.luoc;

import com.luoc.service.Command;
import com.luoc.service.Reciever;
import com.luoc.service.impl.ConcreteCommand;
import com.luoc.service.impl.ConcreteReceiver;


/**
 * @Author: luoc
 * @Date: 2019/9/26 15:56
 *  命令模式的本质是对请求进行封装，一个请求对应于一个命令，将发出命令的责任和执行命令的责任分割开。
 *  每一个命令都是一个操作：请求的一方发出请求要求执行一个操作；接收的一方收到请求，并执行相应的操作。
 *  命令模式允许请求的一方和接收的一方独立开来，使得请求的一方不必知道接收请求的一方的接口，
 *  更不必知道请求如何被接收、操作是否被执行、何时被执行，以及是怎么被执行的。
 * 命令模式的关键在于引入了抽象命令类，
 * 请求发送者针对抽象命令类编程，只有实现了抽象命令类的具体命令才与请求接收者相关联。
 * 在最简单的抽象命令类中只包含了一个抽象的execute()方法，
 * 每个具体命令类将一个Receiver类型的对象作为一个实例变量进行存储，从而具体指定一个请求的接收者，
 * 不同的具体命令类提供了execute()方法的不同实现，并调用不同接收者的请求处理方法
 *
 */
public class CommandPattern {

    public static void main(String[] args) {
        Command command = new ConcreteCommand();
        Reciever receiver = new ConcreteReceiver();
        command.setReciveer(receiver);
        command.excute();
    }
}
